package com.itheima.controller;

import com.itheima.pojo.Result;
import com.itheima.utils.AliOSSUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@Slf4j
@RestController
public class UploadController {

    /**
     * 文件上传
     * @param username
     * @param age
     * @param image
     * @return
     */
    /*@PostMapping("/upload")
    public Result upload(String username, Integer age, MultipartFile image) throws Exception {
        log.info("username = {}, age = {}, image = {}", username, age, image.getOriginalFilename());

        // 文件上传，服务器会将文件存储到一个临时文件夹中，一旦请求结束，文件就会立刻被清楚，所以需要手动保存文件到指定位置
        *//**
         * 存在的问题：
         * 1.文件存在被覆盖的风险  ---使用UUID来随机生成文件名
         * 2.后缀获取--从原始文件名中获取
         * 3.文件路径写死了--应该配置在配置文件中
         * 4.图片默认不能超过1MB--设置参数大小
         *//*

        // 优化：使用UUID来随机生成文件名
        String fileName = UUID.randomUUID().toString();
        // 从原始文件名中获取后缀
        String originalFilename = image.getOriginalFilename();      //得到  1.2.3.4.jpg
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));

        // 1.指定位置保存文件
        image.transferTo(new File("D://images//" + fileName+suffix));

        // 2.返回文件名
        return Result.success(fileName+suffix);
    }*/

    @Autowired
    private AliOSSUtils aliOSSUtils;

    /**
     * 文件上传
     * @param username
     * @param age
     * @param image
     * @return
     */
    @PostMapping("/upload")
    public Result upload(MultipartFile image) throws Exception {
        // 文件上传，服务器会将文件存储到一个临时文件夹中，一旦请求结束，文件就会立刻被清楚，所以需要手动保存文件到指定位置
        log.info("原始文件名 = {}", image.getOriginalFilename());

        //1.调用工具类，将文件上传到OSS
        String url = aliOSSUtils.upload(image);

        // 2.返回文件名
        return Result.success(url);
    }
}
